package main

import (
	"fmt"
	"strings"
)

func main() {
	//Builder 用于使用 Write 方法有效地构建字符串。 它最大限度地减少了内存复制。 零值即可使用。 不要复制非零的 Builder。
	var b strings.Builder

	for i := 3; i >= 1; i-- {
		fmt.Fprintf(&b, "%d...", i)
	}

	b.WriteString("ignition")
	//3...2...1...ignition
	fmt.Println(b.String())

	//Cap 返回构建器底层字节片的容量。 它是为正在构建的字符串分配的总空间，包括已写入的任何字节。

	fmt.Printf("strings.builder cap is :%d", b.Cap())
	fmt.Printf("strings.builder len is :%d", b.Len())

	//如有必要，Grow 会增加 b 的容量，以保证另外 n 个字节的空间。 在 Grow(n) 之后，至少可以将 n 个字节写入 b 而无需其他分配。 如果 n 是负数，Grow 恐慌
}
